package cn.com.dhcc.ddi.task.service.transform;

import org.apache.commons.lang.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 函数
 *
 * @日期：2016/11/24 11:10
 * @作者：张洪涛
 * @版权所有：东华软件
 * @版本：1.0
 */
public class FXAction {

    // 短日期格式
    public static String DATE_FORMAT = "yyyy-MM-dd";

    // 长日期格式
    public static String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    //是否为系统时间标志
    public static String datebase_system = "SYSDATE";

    /**
     * 字符串替换
     * 源字符串:userName  使用changeTo('user_name')之后结果为：user_name
     *
     * @param srcStr
     * @return
     * @pa newStr
     */
    public String changeTo(String str, String oldStr, String newStr) {
        return str.replaceAll(oldStr, newStr);
    }

    /**
     * 在字符串前添加字符串，arg1：源字符串。arg2 前缀字符串
     * 源字符串:userName  使用preAppend('userName','c_')之后结果为：c_userName
     *
     * @param str
     * @param arg2
     * @return
     */
    public String preAppend(String str, String arg2) {
        return arg2 + str;
    }

    /**
     * 替换前缀
     * @param str
     * @param oldStr
     * @param newStr
     * @return
     */
    public String replacePrefix(String str,String oldStr,String newStr){
        if (str.toLowerCase().indexOf(oldStr.toLowerCase()) == 0){
            return str.toLowerCase().replace(oldStr.toLowerCase(),newStr.toLowerCase());
        }
        return str.toLowerCase();
    }

    /**
     * 替换后缀
     * @param str
     * @param oldStr
     * @param newStr
     * @return
     */
    public String replaceSuffix(String str,String oldStr,String newStr){
        if (str.toLowerCase().lastIndexOf(oldStr.toLowerCase()) == str.length()-oldStr.length()){
            return str.toLowerCase().replace(oldStr.toLowerCase(),newStr.toLowerCase());
        }
        return str.toLowerCase();
    }

    /**
     * 在字符串后添加字符串，arg1：源字符串。arg2 前缀字符串
     * 源字符串:userName  使用preAppend('userName','_c')之后结果为：userName_c
     *
     * @param str
     * @param arg2
     * @return
     */
    public String afterAppend(String str, String arg2) {
        return str + arg2;
    }

    /**
     * 转换为整形数值,无四舍五入
     * 源值:11.61  使用truncTonumber之后结果为：11
     *
     * @param num
     * @return
     */
    public String truncTonumber(double num) {
        return Math.round(Math.floor(num)) + "";
    }

    /**
     * 转换为整形数值,四舍五入
     * 源值:11.61  使用aroundTonumber之后结果为：12
     *
     * @param num
     * @return
     */
    public String aroundTonumber(double num) {
        return Math.round(num) + "";
    }

    /**
     * 将长整型数字转换为日期格式的字符串
     *
     * @param num
     * @param format
     * @return
     */
    public String longtoDateString(long num, String format) {
        if (num > 0l) {
            if (StringUtils.isBlank(format))
                format = TIME_FORMAT;
            SimpleDateFormat sf = new SimpleDateFormat(format);
            Date date = new Date(num);
            return sf.format(date);
        }
        return "";
    }

    /**
     * 将日期格式的字符串转换为长整型
     *
     * @param date
     * @param format
     * @return
     */
    public String convert2long(String date, String format) {
        if (StringUtils.isNotBlank(date)) {
            try {
                if (StringUtils.isBlank(format))
                    format = TIME_FORMAT;
                SimpleDateFormat sf = new SimpleDateFormat(format);
                return sf.parse(date).getTime() + "";
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return "0";
    }

    /**
     * 当为空时设置默认值。可自定义，也可选择常用默认值。可选值同setDefault。
     * @param value
     * @param defVal
     * @return
     */
    public String whenNullSetDefault(String value,String defVal) {
        if (StringUtils.isBlank(value))
            value = setDefault(defVal);
        return value;
    }

    /**
     * 设置默认值。可自定义，也可选择常用默认值。
     * @param defVal
     * @return
     */
    public String setDefault(String defVal) {
        return defVal;
    }

    /**
     *设置默认值，数据库系统时间
     * @return
     */
    public String setCurrentDate() {
        return "SYSDATE";
    }

    public static void main(String[] args) {
        String str = "gw_z_exch_t";
        String oldStr = "_exch_t";
        String newStr = "_t";
        FXAction fx = new FXAction();
        System.out.println(fx.replaceSuffix(str,oldStr,newStr));
    }
}
